package com.road.vast.springboot;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;

/**
 * @Author 郭泽鹏
 * @Date 2020/6/25 1:06
 * @description 删除已经部署的流程定义
 * 影响表（跟流程定义部署一样）：
 * act_re_deployment：部署信息
 * act_re_procdef：流程定义的一些信息
 * act_ge_property：流程定义的bpmn文件及png文件
 * @Version 1.0
 */


public class ProcessDefinitionDelete {
    /*
    注意事项：
        1、当我们正在执行这一套流程没有完全审批结束的时候（在act_ru_task中还有流程定义部署id相关的记录），此时如果要删除流程定义信息就会失败
        2、如果公司层要强制删除，可以使用repositoryService.deleteDeployment("1",true);
            //参数true代表级联删除，此时就会删除没有完成的流程结点
     */
    public static void main(String[] args) {
        //创建ProcessEngine对象
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();

        //创建RepositoryService对象
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();

        //3、执行删除流程定义，参数代表流程部署的id，
        // 该流程定义存在未完成的实例不能删除，若想强制删除增加第二个参数true表示强制删除
        repositoryService.deleteDeployment("100001");
    }
}
